#include <stdio.h>

void merge3(int* nums1, int nums1Size, int m, int* nums2, int nums2Size, int n) {
    int tmp[m];
    for(int i=0;i<m;i++)
        tmp[i]=nums1[i];
    int p1=0,p2=0;
    for(int i=0;i<m+n;i++){
        if( tmp[p1] <= nums2[p2] ){
            nums1[i]=tmp[p1++];
        }else{
            nums1[i]=nums2[p2++];
        }
    }
}

void merge2(int* nums1, int nums1Size, int m, int* nums2, int nums2Size, int n) {
    int tmp[m+n];
    int c1=0,c2=0,k=0;
    while( c1 < m && c2 < n ){
        if( nums1[c1] <= nums2[c2] )
            tmp[k++]=nums1[c1++];
        else
            tmp[k++]=nums2[c2++];
    }
    while( c1 < m )
        tmp[k++]=nums1[c1++];
    while( c2 < n )
        tmp[k++]=nums2[c2++];
    for(int i=0;i<m+n;++i)
        nums1[i]=tmp[i];
    return ;
}

void merge(int* nums1, int nums1Size, int m, int* nums2, int nums2Size, int n) {
    int p1=m-1,p2=n-1,k=n+m-1;
    while( p1 >= 0 && p2 >= 0 ){
        nums1[k--]=nums1[p1] >= nums2[p2] ? nums1[p1--]:nums2[p2--]; 
    }
    while( p1 >= 0 )
        nums1[k--]=nums1[p1--];
    while( p2 >= 0 )
        nums1[k--]=nums2[p2--];
    return;
}
int main(){
    int a[10]={1,3,5,7,9};
    int b[]={2,4,6,8,10};
    merge(a,sizeof(a)/sizeof(int),5,
        b,sizeof(b)/sizeof(int),sizeof(b)/sizeof(int));
    for(int i=0;i<5+sizeof(b)/sizeof(int);i++)
        printf("%d ",a[i]);
    return 0;
}
